package com.qfedu.wmsuser.user.service;


import com.qfedu.common.core.common.R;
import com.qfedu.common.core.entity.UserStaff;
import com.qfedu.wmsuser.user.param.LoginParam;
import com.qfedu.wmsuser.user.param.LoginParam1;
import com.qfedu.wmsuser.user.vo.UserStaffVO;
import com.qfedu.wmsuser.user.vo.UserVO;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.web.multipart.MultipartFile;
import reactor.core.publisher.Mono;

/**
 * @author zsjx
 */
public interface UserService {

    /**
     * 登录
     * @return token
     */
    String login(LoginParam loginParam);

    /**
     * 获取当前登录用户的信息
     * @param request 当前请求，包含token
     * @return 当前登录用户的信息
     */
    Mono<UserVO> my1(ServerHttpRequest request);

    /**
     * 登出
     * @param request 当前请求，包含token
     * @return 一个表示登出操作结果的Mono
     */
    Mono<R> logout(ServerHttpRequest request);

    /**
     * 获取当前登录用户的信息
     * @return 当前登录用户的信息
     */
    UserVO my();

    /**
     * 登录
     * @param loginParam1 登录参数
     * @return 登录结果
     */
    String login1(LoginParam1 loginParam1);

    /**
     * 获取当前登录用户的信息
     * @param request 当前请求，包含token
     * @return 当前登录用户的信息
     */
    Mono<UserStaffVO> my2(ServerHttpRequest request);

    /**
     * 添加用户
     *
     * @param userStaff 用户信息
     * @return 添加结果
     */
    int insertUserStaff(UserStaff userStaff);

    /**
     * 修改用户
     *
     * @param userStaff 用户信息
     * @return 修改结果
     */
    int updateUserStaff(UserStaff userStaff);

    /**
     * 删除用户
     *
     * @param id 用户id
     * @return 删除结果
     */
    int deleteById(Integer id);

    /**
     * 头像上传
     */
    R uploadAvatar(MultipartFile file);
}
